package com.category.douyijia.dao;

import java.util.ArrayList;
import java.util.List;

import com.category.douyijia.model.User;
import com.jfinal.aop.Aop;

/**
 * dao实现基本的增删改查功能的配置，
 * dao层中仅仅封装CRUD功能，
 * 不进行具体的数据效验工作。
 * @author JunfengLiu
 * date time:2021-8-4 20:13:48
 *
 */
public class UserDao {
	private User user = Aop.get(User.class);
	private List<User> userList = new ArrayList<User>();
	private boolean result;
	
	/**
	 * 查找全部用户信息
	 * @return
	 */
	public List<User> selectAllUser(){
		userList = user.dao().findAll();
		return userList;
	}
	/**
	 * 通过ID查找用户
	 * @param userId
	 * 用户id
	 * @return
	 * 用户信息
	 */
	public User selectUserById(String userId){
		if(userId != null && !(userId.equals(""))){
			return user.dao().findById(userId);
		}
		//用户ID为空的情况下返回值为null，防止全查
		return null;
	}
	/**
	 * 用户登录功能
	 * @param userId
	 * 用户登录账号
	 * @param password
	 * 用户密码
	 * @return
	 * 用户或空对象
	 */
	public User selectUserByToken(String userId,String password){
		if (userId.length()>0 && password.length()>0) {
			userList = user.dao().find("select * from "
										+ "t_user where "
										+ "user_id = ? "
										+ "and "
										+ "user_password = ?", userId,password);
		}
		if (userList.size() == 1) {
			user = (User)userList;
			return user;
		}else {
			return null;
		}
	}
	/**
	 * DAO层中账户注册仅用于添加账户信息，不进行数据验证
	 * @param user
	 * 用户信息
	 * @return
	 * 添加结果
	 */
	public boolean insert(User user){
		result = false;
		if (user != null) {
			this.user = user;
			result = this.user.dao().save();
		}
		return result;
	}
	
	/**
	 * 通过id删除用户信息
	 * @param userId
	 * 用户登录ID
	 * @return
	 *  删除结果
	 */
	public boolean deleteUserById(String userId){
		result = false;
		//判断传入的值是否合法
		if (userId != null && !(userId.equals(""))) {
			//执行查询检查是否存在
			user = user.dao().findById(userId);
		}
		//用户存在执行删除
		if (user != null) {
			result = user.dao().deleteById(userId);
			return result;
		}else {
			//不存在返回false
			return result;
		}
	}
	/**
	 * 通过用户ID更新用户信息
	 * @param userId
	 * 用户登录ID
	 * @param newUser
	 * 提交的新用户信息
	 * @return
	 * 更新结果
	 */
	public boolean updateByUserId(String userId,User newUser){
		result = false;
		User oldUser = new User();
		if (userId != null && !(userId.equals(""))) {
			oldUser = user.dao().findById(userId);
		}
		if (oldUser != null) {
			user = newUser;
		}
		if (oldUser != newUser && oldUser != user && user.getUserId().equals(userId)) {
			result = user.dao().findById(userId)._setAttrs(newUser).update();
			return result;
		}else {
			return result;
		}
	}
	/**
	 * 通过用户ID禁用用户账号
	 * @param userId
	 * 用户ID
	 * @return
	 * 禁用结果
	 */
	public boolean stopUserById(String userId){
		result = false;
		if (userId != null && !(userId.equals(""))) {
			result = user.dao().findById(userId).set("userStatue", 0).update();
			return result;
		}else {
			return result;
		}
	}
	/**
	 * 通过Id启用账户
	 * @param userId
	 * 用户Id
	 * @return
	 * 启用结果
	 */
	public boolean startUserById(String userId){
		result = false;
		if (userId != null && !(userId.equals(""))) {
			result = user.dao().findById(userId).set("userStatue", 1).update();
			return result;
		}else {
			return result;
		}
	}
	
}
